package com.kevinkk.greedy;

/**
 * 给你一个整数数组 nums ，请你找出一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
 * 子数组是数组中的一个连续部分。
 */

public class MaximumSubarray {
    class Solution {
        public int maxSubArray(int[] nums) {
            int max = Integer.MIN_VALUE, sum = 0;
            for(int i : nums){
                sum += i;
                // 先更新 max 再更新 sum
                max = Math.max(max, sum);
                sum = sum < 0 ? 0 : sum;    // 如果 sum 小于0了，就重新开始计数
            }
            return max;

        }
    }
}
